#region Released to Public Domain by Gael Fraiteur
/*----------------------------------------------------------------------------*
 *   This file is part of samples of PostSharp.                                *
 *                                                                             *
 *   This sample is free software: you have an unlimited right to              *
 *   redistribute it and/or modify it.                                         *
 *                                                                             *
 *   This sample is distributed in the hope that it will be useful,            *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of            *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                      *
 *                                                                             *
 *----------------------------------------------------------------------------*/
#endregion

#region Copyright (c) 2005 by Gael Fraiteur

/*--------------------------------------------------------------------------------------------------
 *  PostSharp, a post-compiler for the .NET Platform
 *  Copyright (c) 2004-2005
 *  by Gael Fraiteur, gael@fraiteur.net, http://gael.fraiteur.net
 *  ------------------------------------------------------------------------------------------------
 *  The contents of this file are subject to the Mozilla Public License                    
 *  Version 1.1 (the "License"); you may not use this file except in
 *  compliance with the License. You may obtain a copy of the License at
 *  http://www.mozilla.org/MPL/
 * 
 *  Software distributed under the License is distributed on an "AS IS"
 *  basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
 *  License for the specific language governing rights and limitations
 *  under the License.
 * 
 *  The Original Code is any part of this file that is not explicitely
 *  marked as being a contribution.
 * 
 *  The Initial Developer of the Original Code is Gael Fraiteur.
 *  Portions created by Gael Fraiteur are Copyright (C) 2004-2005. 
 *  All Rights Reserved.
 * 
 *  Contributor(s): None.
 * 
 *  Alternatively, the contents of this file may be used under the terms
 *  of the LGPL license (the  "LGPL License"), in which case the
 *  provisions of LGPL License are applicable instead of those
 *  above. If you wish to allow use of your version of this file only
 *  under the terms of the LGPL License and not to allow others to use
 *  your version of this file under the MPL, indicate your decision by
 *  deleting the provisions above and replace them with the notice and
 *  other provisions required by the LGPL License. If you do not delete
 *  the provisions above, a recipient may use your version of this file
 *  under either the MPL or the LGPL License.
 *  ------------------------------------------------------------------------------------------------
 *  $Header$
 *--------------------------------------------------------------------------------------------------
 */

#endregion

using System;
using System.Diagnostics;
using PostSharp.Samples.Trace;
using PostSharp.Samples.Trace.Test.FirstNamespace;
using PostSharp.Samples.Trace.Test.SecondNamespace;

[assembly: Trace( Category = "BaseCategory" )]
[assembly: Trace( AttributeTargetTypes = "PostSharp.Samples.Trace.Test.FirstNamespace.*",
    Category = "FirstCategory" )]
[assembly: Trace( AttributeTargetTypes = "PostSharp.Samples.Trace.Test.SecondNamespace.*",
    Category = "SecondNamespace", AttributePriority = 10 )]
[assembly: Trace( AttributeTargetTypes = "PostSharp.Samples.Trace.Test.SecondNamespace.*",
    AttributeTargetMembers = "*NotTrace", AttributeExclude = true, AttributePriority = 20 )]

namespace PostSharp.Samples.Trace.Test
{
    public static class Program
    {
        public static int Main( string[] args )
        {
            System.Diagnostics.Trace.Listeners.Add( new TextWriterTraceListener( Console.Out ) );
            FirstClass firstClass = new FirstClass();
            firstClass.TestVoid();
            firstClass.TestInt32();
            new FirstClass( 1 );
            new FirstClass( 1, 2 );
            try
            {
                firstClass.TestException();
            }
            catch
            {
                Console.WriteLine( "Catch." );
            }

            SecondClass.MethodNotTrace();
            SecondClass.SomeNonTracedMethod();
            SecondClass.SomeOtherCategory();
            SecondClass.SomeTracedMethod();
            ThirdClass.NotTraced();
            ThirdClass.Traced();
            return 0;
        }
    }
}